package cn.liit.weixin.qrcode;

import java.util.Map;

import name.zbq.bush.utils.StringUtil;
import name.zbq.bush.utils.http.HttpConnect;

public class WeixinQrcode {
	private final static String APIURL_TICKET = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=";
	private final static String APIURL_QRCODE = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=";

	/**
	 * 生成临时二维码
	 * @param expire_seconds 二维码有效时间单位秒
	 * @param scene_id 场景值id：临时二维码为最大32位非零整形   
	 * @param access_token
	 * @return 生成的二维码的连接  生成失败返回null
	 */
	public static String genQR(Integer expire_seconds,String scene_id,String access_token){
		Map<String,String> result = HttpConnect.getInstance().doPostJson(APIURL_TICKET+access_token,
				"{\"action_name\":\"QR_SCENE\",\"expire_seconds\":"+expire_seconds+",\"action_info\":"
				+ "{\"scene\":{\"scene_id\":"+StringUtil.ifNullToEmpty(scene_id)+"}}}");
		String ticket = result.get("ticket");
		if(!StringUtil.isEmpty(ticket))
			return APIURL_QRCODE+ticket;
		return null;
	}
	/**
	 * 生成永久二维码(永久二维码有数量限制，目前为最多10万个)
	 * @param scene_id 场景值id ：永久二维码时最大值为100000（目前参数只支持1--100000）
	 * @param scene_str 场景值ID（字符串形式的ID），字符串类型，长度限制为1到64，仅永久二维码支持此字段
	 * @param access_token
	 * @return 生成的二维码的连接  生成失败返回null
	 */
	public static String genLimitQR(String scene_id,String scene_str,String access_token){
		Map<String,String> result = HttpConnect.getInstance().doPostJson(APIURL_TICKET+access_token,
				"{\"action_name\":\"QR_LIMIT_SCENE\",\"action_info\":"
				+ "{\"scene\":{\"scene_id\":"+StringUtil.ifNullToEmpty(scene_id)+",\"scene_str\":\""+StringUtil.ifNullToEmpty(scene_str)+"\"}}}");
		String ticket = result.get("ticket");
		if(!StringUtil.isEmpty(ticket))
			return APIURL_QRCODE+ticket;
		return null;
	}
}
